AWS ParallelCluster を GUI で管理できる AWS ParallelCluster Manager を試してみた
HPC のクラスター操作に GUI を使うの!?と思っていました。AWS ParallelCluster の場合はというと、CLI でクラスターを作成し、ときには変更、使わなくなったら削除する運用をpclsuter
コマンドで行ってきました。GUI でクラスターを管理できると噂の AWS ParallelCluster Manager に手を出してみたら良かったので紹介します。
AWS ParallelCluster Manger の構築方法、新規クラスターの作成と、ジョブの実行、クラスターの削除までをキャプチャ中心でお届けします。
AWS ParallelClusetr Manger(Web コンソール)からできたこと
- クラスターの作成・削除
- 自前のコンフィグファイルをアップロードしてクラスター作成も可能
- セッションマネージャーでヘッドノードへログイン
- ジョブのサブミット
- スクリプト(ジョブの内容)を作成するにはヘッドノードにログインする必要がある
- ジョブの実行状況確認
- コンピュートノードの起動状況確認
- ヘッドノード、コンピュートノードの各種ログの検索、表示
- CloudWatch Logs のロググループ内容をいい感じに表示してくれる
- ParallelCluster Manager の ParallelCluster のバージョンへ追従が早い
- 約3週間前にリリースされた v3.2 に対応していました
上記は今ところ確認できた範囲です。
AWS ParallelCluster Manager とは
ParallelCluster のクラスターを管理するために ParallelCluster API をラップした Web インタフェースを提供してくれる仕組みです。利用費はサーバレスアーキテクチャなこともあり、一般的な利用では $1/月以下程度になるだろうと説明があります。
aws-samples/pcluster-manager: Manage AWS ParallelCluster through an easy to use web interface
画像引用: pcluster-manager/architecture.png at main · aws-samples/pcluster-manager
AWS ParallelCluster Manager をデプロイ
Quicstartを参考にすすめます。現時点で最新の ParallelCluster 3.2.0 に対応しており問題なく動作確認ができました。ひととおり動かしたあとに知ったのですが以下のセットアップガイドに沿いつつ、最新の GitHub リポジトリの情報を参考にすすめるとなお良かったかなと思いました。
Setup :: Pcluster Manager Docs
ParallelCluster Manager へログインしてみる
以下のリンクで提供されている CloudFormation テンプレートを利用して自身の AWS アカウントにデプロイするだけ完成するお手軽設計です。
管理者ユーザー用のメールアドレス登録が必要です。登録したメールアドレス宛に初回のログイン情報がメールで通知されます。本来はMFAを有効化するべきなのですが事前準備が必要なことと、動作確認が目的なため無効ではじめました。多要素認証はSMS(ショートメッセージ)にしか ParallelCluster Manager は対応していません。MFA認証のための事前準備は以下のリンクを参考にしてください。
a. Setup SMS for MFA :: Pcluster Manager Docs
ParallelCluster Manager はユーザー認証の仕組みに Cognito を利用しています。Cognito でワンタイムパスワードを使用した多要素認証をサポートするには ParallelCluster Manager 側で追加実装が必要になるため、現状は SMS 認証のみサポートしているものと思われます。
15分ほどデプロイが完了しました。ParallelCluster Manager のログイン URL と、初回ログイン用のパスワード記載のメールが届きます。
ログイン後、パスワードの変更を矯正されログインすると以下の管理画面へアクセスできます。AWS アカウント上に存在している既存のクラスターが表示されています。
新規クラスターを作成してみる
Create Clusterボタンから Wizard にしたがってクラスターを作成してみます。コンフィグファイルのアップロードをサポートしているため、クラスター作成の実行基盤としても利用できそうですね。
クラスターの基本設定をします。VPC は AWS アカウントに存在している VPC から選択できます。通常コンフィグを作成するときは VPC ID を入力しないといけないですから便利です。あと AD 連携の設定も用意されていますね。
ヘッドノードの基本設定をします。Remote Console Enabled
を有効化するとセッションマネージャーで接続用の IAM ポリシーがアタッチされました。(図の下の方)ParallelCluster Manager の Web コンソールから直接セッションマネージャーで接続できるボタンが用意されているため、有効化しておくと楽にヘッドノードへ接続できるようになります。
共有ストレージの設定をします。新規ストレージを作成してマウントできます。クラスターの運用を考慮するとクラスターのコンフィグ内でストレージを作成するのではなく、別途作成したストレージをマウントした方が良いです。ベストプラクティスでも同様のことが書かれています。ですのでここではストレージはなにも選択しないですすめます。
Best practices: moving a cluster to a new AWS ParallelCluster minor or patch version Best practices - AWS ParallelCluster
コンピュートノード(Queue)の設定です。サブネットも選択でき、選択画面ではサブネットの Name タグが表示されているため選択がひじょうに 便利です。セッションマネージャーで接続用の IAM ポリシー追加のチェックはなかったので、必要であれば IAM Policies の欄に ARN を入力するようです。ヘッドノードは日常的にログインしますが、コンピュートノードに接続するのはトラブル時が多い思いますのでマストではないです。
ポチポチ選択しただけでいつものコンフィグが生成されています。素晴らしい。
Dry Runボタンがあったので試してみました。チェックできるのはいいですね。
Createボタンをクリックしてクラスターを作成します。
10分程度待つとクラスターの作成が完了しました。
補足 クラスター作成時にタイムアウト
最初Createボタンを押したとき、Endpoint request time out
で作成に失敗しました。
対応方法はBackボタンで画面を戻して、Refresh AWS Configがある画面で一度クリックして更新かけます。そのあと再度Createをクリックすると正常にクラスターが作成できました。
ジョブをサブミットしてみる
ジョブの実行内容であるスクリプトを作成するためヘッドノードへログインします。クラスターを選択してShellをクリックするとセッションマネージャーでヘッドノードへログインできます。ジョブのサブミットは Web コンソールから実行してみます。
date
コマンドを実行するテストスクリプトを作成しスクリプトのパスを確認します。
$ vi test.sh $ pwd /home/ubuntu
Web コンソールに戻りジョブをサブミットしてみます。スクリプトを編集するためにヘッドノードへログインしたならsbatch
でサブミットした方が早い気もしますが、規定のジョブを投げる作業なら Web コンソールからもありかもしれません。
sbatch
のオプション項目に対応した登録画面が用意されています。スクリプトのパスは指定しないといけないです。Run a Command(instead of script)
を有効にするとコマンドを直接入力もできました。通常の HPC 利用でしたらスクリプトありきですけど、今回みたいなテスト実行だとスクリプトをわざわざ用意しなくても大丈夫でした。
Web コンソールからジョブのステータスを確認できます。
コンピュートノードの起動状況も確認できます。
squeue
, sinfo
相当の情報を Web コンソールで確認できました。
$ squeue JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) 1 queue0 test-job ubuntu CF 1:19 1 queue0-dy-queue0-c5large-1 $ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue0* up infinite 1 alloc# queue0-dy-queue0-c5large-1 queue0* up infinite 5 idle~ queue0-dy-queue0-c5large-[2-6] queue1 up infinite 4 idle~ queue1-dy-queue1-c6ilarge-[1-4]
そうこうしているうちにジョブが完了してました。ヘッドノードのから実行結果のファイルを確認できました。
$ cat slurm-1.out Tue Aug 16 07:00:12 UTC 2022
Web コンソールからは実行結果までは確認できません。ジョブが終わったのかどうかはログを確認するしかなさそうです。普段確認するログはすべて項目が用意されています、便利。ジョブ実行、終了ログはslurmctld
のログから確認できます。
ログを下までスクロールし最新のログを確認すると、JobId=1 done
のメッセージを確認できます。
以上で ParallelCluster Manager を利用した Web コンソールからのジョブの実行まで完了です。ジョブの終了確認はライトユーザー向けの方法ではないとは思うので他に確認方法があるような気もしてきました。
後片付け
クラスターを作成できるなら削除もできます。クラスターの管理はお手軽ですね。
削除の対象のクラスターを間違いないように注意しましょう。
削除が開始されました。
おわりに
動作確認目的ではじめたので MFA 有効化を妥協したのですが、クラスターの管理するには使い勝手がよかったです。MFA 有効化してクラスターのメンテナンス用の環境として用意してみたいと思いました。